102 research outputs found

    Minimizing Energy Consumption of MPI Programs in Realistic Environment

    Full text link
    Dynamic voltage and frequency scaling proves to be an efficient way of reducing energy consumption of servers. Energy savings are typically achieved by setting a well-chosen frequency during some program phases. However, determining suitable program phases and their associated optimal frequencies is a complex problem. Moreover, hardware is constrained by non negligible frequency transition latencies. Thus, various heuristics were proposed to determine and apply frequencies, but evaluating their efficiency remains an issue. In this paper, we translate the energy minimization problem into a mixed integer program that specifically models most current hardware limitations. The problem solution then estimates the minimal energy consumption and the associated frequency schedule. The paper provides two different formulations and a discussion on the feasibility of each of them on realistic applications

    Quantum Monte Carlo for large chemical systems: Implementing efficient strategies for petascale platforms and beyond

    Full text link
    Various strategies to implement efficiently QMC simulations for large chemical systems are presented. These include: i.) the introduction of an efficient algorithm to calculate the computationally expensive Slater matrices. This novel scheme is based on the use of the highly localized character of atomic Gaussian basis functions (not the molecular orbitals as usually done), ii.) the possibility of keeping the memory footprint minimal, iii.) the important enhancement of single-core performance when efficient optimization tools are employed, and iv.) the definition of a universal, dynamic, fault-tolerant, and load-balanced computational framework adapted to all kinds of computational platforms (massively parallel machines, clusters, or distributed grids). These strategies have been implemented in the QMC=Chem code developed at Toulouse and illustrated with numerical applications on small peptides of increasing sizes (158, 434, 1056 and 1731 electrons). Using 10k-80k computing cores of the Curie machine (GENCI-TGCC-CEA, France) QMC=Chem has been shown to be capable of running at the petascale level, thus demonstrating that for this machine a large part of the peak performance can be achieved. Implementation of large-scale QMC simulations for future exascale platforms with a comparable level of efficiency is expected to be feasible

    Diamond schemes:An organization of parallel memories for efficient array processing

    Get PDF
    Projet CHLOEDisponible dans les fichiers attachés à ce documen

    Fine-grained Benchmark Subsetting for System Selection

    Get PDF
    ABSTRACT System selection aims at finding the best architecture for a set of programs and workloads. It traditionally requires long running benchmarks. We propose a method to reduce the cost of system selection. We break down benchmarks into elementary fragments of source code, called codelets. Then, we identify two causes of redundancy: first, similar codelets; second, codelets called repeatedly. The key idea is to minimize redundancy inside the benchmark suite to speed it up. For each group of similar codelets, only one representative is kept. For codelets called repeatedly and for which the performance does not vary across calls, the number of invocations is reduced. Given an initial benchmark suite, our method produces a set of reduced benchmarks that can be used in place of the original one for system selection. We evaluate our method on the NAS SER benchmarks, producing a reduced benchmark suite 30 times faster in average than the original suite, with a maximum of 44 times. The reduced suite predicts the execution time on three target architectures with a median error between 3.9% and 8%

    Performance prediction based on codelet driven application characterization

    No full text
    Comprendre l'interaction existante entre applications, compilateurs, et architecture est fondamentale pour fabriquer de meilleurs produits: applications, compilateurs, et processeurs. L'un des moyens traditionnels permettant d'aborder ce problème reste l'expérimentation. Cependant cette méthode utilisant des applications complètes présente plusieurs inconvénients majeurs: complexité des applications pour faire, par exemple, de la simulation, ou une analyse détaillée de la performance de l'application; impossibilité d'avoir une vue précise de l'interaction; et enfin difficulté à prédire la performance d'une autre application n'existant pas dans la collection initiale.Cette thèse effectue une caractérisation systématique des applications en quatre étapes: extraction de code, analyse de performance, caractérisation mémoire, et prédiction de performance au niveau matériel. Afin de prédire la performance d'un code à une autre fréquence, cette thèse combine analyses statique et dynamique, ainsi que de la caractérisation mémoire pour proposer l'outil Capacity, destiné à la prédiction de performance au niveau matériel et à la découverte de connaissance. L'outil proposé est à la fois plus précis et plus rapide que les simulations, plus informatif que de simples expériences ou micro-expériences. Il est également utile et instructif pour diagnostiquer les problèmes de performance de code. Aujourd'hui, cet outil est utilisé par la technologie Cape-sim d'Intel pour simuler la performance d'un code à une autre fréquence.Understanding the interaction between applications, compilers, and architecture is a fundamental issue to generate better products: applications, compilers, and processors. One of the traditional tools to approach this problem is benchmarking. However, this approach through full applications has several key drawbacks. First, full applications are complex and hard to use as test codes for simulation, or detailed performance analysis. Second, dealing with full applications does not allow having an accurate view of the interaction. In the end, it is fairly hard to predict the performance for another application, which is not present in the original benchmark suite. This thesis performs a systematic characterization of applications in four steps: code extraction, performance analysis, memory characterization, and hardware performance prediction. In order to predict a code's performance at another frequency, this thesis combines static and dynamic analysis with memory characterization to propose the Capacity tool, a framework for hardware performance prediction and knowledge discovery. The proposed tool is more accurate and faster than simulations, more informative than simple benchmarking, or micro-benchmarking. Furthermore, it is useful and enlightening for a range of performance investigations. Currently, the framework is used by the Intel Cape-sim technology to simulate a software system's performance at another frequency.VERSAILLES-BU Sciences et IUT (786462101) / SudocSudocFranceF

    Transformation et optimisation des programmes pour le parallélisme d'instructions

    No full text
    Nous commencerons d'abord par l'introduction des techniques de transformation et d'optimisation a haut niveau au chapitre 2. la présentation des architectures auxquelles nous nous intéressons, les processeurs super scalaires et vliw, est présentée dans le chapitre 3. après avoir aborde les principales machines, nous présentons la méthode de la simulation des unités fonctionnelles qui est voisine des tables de réservation réduites. Dans le quatrième chapitre, nous introduisons les techniques existantes d'extraction de dépendances de données pour qu'elles puissent être utilisées dans les phases de transformation et d'optimisation. Le chapitre suivant résumera les différentes méthodes de la transformation de code source. Nous avons utilisé sage++ comme base de travail pour réaliser les transformations, les parallelisations et les optimisations de code source (tops) dai99. sage++ fournit une abstraction du programme source, qui facilite la manipulation de code source. Le chapitre 6 détaillera les techniques d'élimination de code redondant en intégrant le pipeline logiciel afin de minimiser les opérations de chargement et déchargement dans la boucle pipelinée. Dans le chapitre 7, nous donnons les résultats expérimentaux des performances qui intègrent différentes transformations et les méthodes d'optimisation que nous avons développées...VERSAILLES-BU Sciences et IUT (786462101) / SudocSudocFranceF

    Stability analysis and improvement of the block Gram-Schmidt algorithm

    Get PDF
    The advent of supercomputers with hierarchical memory systems has imposed the use of block algorithms for the linear algebra algorithms. Although block algorithms may result in impressive improvements in performance, their numerical properties are quite different from their scalar counterpart and deserve an in depth study. In this paper, the numerical stability of Block Gram Schmidt orthogonalization is studied and a variant is proposed which has numerical properties similar to the classical Modified-Gram-Schmidt while retaining most of the performance advantages of the block formulation

    Study of back-end compilers for multi-processor system-on-chip architecture

    No full text
    Afin d'entretenir la hausse régulière des performances des calculateurs tout en maîtrisant leur consommation énergétique, l'industrie des microprocesseurs développe des architectures permettant de traiter de plus en plus de tâches en parallèle. Ainsi, les futures générations de puces regrouperont jusqu'à plusieurs centaines de cœurs indépendants, parfois fonctionnellement hétérogènes. Pour ne pas exiger comme pré-requis à leur programmation une connaissance détaillée de leur fonctionnement interne, ces futurs processeurs imposent de fait une évolution de la chaîne de compilation. Dans cette thèse, nous proposons avec la présentation d'une extension pour le compilateur GCC plusieurs axes d'évolution de la phase d'adaptation du programme à l'architecture cible. Afin d'analyser et de transformer le programme à compiler, nous décrivons tout d'abord une représentation intermédiaire qui offre une vue hiérarchique du parallélisme exploitable. L'accent est mis ensuite sur la caractérisation des éléments parallèles détectés, et les informations collectées sont réutilisées dans une nouvelle technique d'ordonnancement statique qui peut exploiter plusieurs degrés de parallélisme. Nous abordons aussi l'ordonnancement dynamique et la génération de code pour architectures hétérogènes telles l'IBM Cell BE et les machines dotées d'un accélérateur NVIDIA. Le modèle d'exécution sous-jacent est supporté par un environnement de programmation et un oracle qui permettent d'ajuster le schéma d'exécution à la volée. Nous terminons par une évaluation expérimentale de toutes ces contributions, confirmant ainsi leur pertinence dans une chaîne de compilation pour architectures massivement parallèles.In order to maintain the continuous growth of the performance of computers while keeping their energy consumption under control, the microchip industry develops architectures capable of processing more and more tasks concurrently. Thus, the next generations of microprocessors may count hundreds of independent cores that may differ in their functions and features. As an extensive knowledge of their internals cannot be a prerequisite to their programming, these forthcoming computers necessitate the compilation flow to evolve. In this thesis, through the presentation of an extension of the GCC compiler, we propose several axes of evolution for the part of a compiler which adapts the input program to the target architecture. In order to analyze and transform a program, we describe first an intermediate representation that offers a hierarchical view of the parallelism available. Then, we put the emphasis on the characterization of the detected parallel constructs, and the information gathered are used in new static scheduling technique which can deal with multiple levels of parallelism. We also address dynamic scheduling and code generation for heterogeneous architectures such as the IBM Cell BE and computers featuring a NVIDIA accelerator. The underlying execution model is supported by a programming framework and a performance predictor which can adjust the execution scheme on the fly. We conclude with an experimental evaluation of all our contributions, thus confirming their relevance in a functional compilation flow for massively parallel architectures.VERSAILLES-BU Sciences et IUT (786462101) / SudocSudocFranceF

    Contribution to the compilation of irregular programs for complex architectures

    No full text
    Contribution à la compilation de programmes irréguliers pour des architecturescomplexesLes architectures multicoeurs sont omniprésentes dans les processeurs généralistes et embarqués. Plusieurs flôts d'instructions (threads) sont exécutés, augmentant le parallélisme, évitant des contentions de ressources.L'execution concurrente d'un thread est déterminant pour le temps d'execution de l'application. Ainsi, l'exploitation fine d'un coeur est indispensable afin de découvrir du parallelisme d'instructions (ILP) au sein d'un flot d'instructions.Cette thèse traite de l'optimisation monocoeur de codes irréguliers comportant du parallélisme "caché". Nous avons conçus des transformations permettant d'augmenter leur ILP : Deep Jam convertissant du parallelisme à gros grain,restructuration des arbres de décisions et une plateforme d'ordonnancement d'instructions unifiant les dépendences de données et les contraintes de ressources complexes. Des accélérations par rapport à des techniques et compilateurs de pointe ont été obtenues sur Itanium 2.Contribution to the Compilation of Irregular Programs for Complex ArchitecturesMulticore architectures are ubiquitous in general purpose and embedded systems. Modern processors execute several instruction flows (threads) increasing the parallelism and accommodating for resource stalls. Both the execution of a thread and its interaction with the others shape the overall performance of an application. Thus, an accurate exploitation of a single core is mandatory: it leads to the necessity to discover the instruction-level parallelism (ILP) within an instruction flow.This thesis focuses on the monocore optimization of irregular codes hoseparallelism is "hidden" behind complex control flow. We designedtransformations to increase their ILP: Deep Jam converting coarse-grain parallelism, decision tree reshaping and an instruction-scheduling framework unifying data dependences and complex resource constraints. Everytransformation leads to significant speedups on a wide issue architecture(Itanium), compared to state-of-the-art techniques and compilers.VERSAILLES-BU Sciences et IUT (786462101) / SudocSudocFranceF
    • …
    corecore